<?php
class Menu extends AppModel {
	var $useTable = 'editable_pages';
	var $name = 'Menu';
	function getPagesInCategory($alias, $fields) {
		$pages = $this->find('all', array(
			'conditions'	=>	array('Category.alias' => $alias),
			'contain'		=>	array(),
			'fields'		=>	$fields,
			'order'			=>	"{$this->name}.title asc",
			'joins' => array(
				array(
					'table' => 'editable_pages_categories',
					'type' => 'INNER',
					'alias' => 'ReferenceCategory',
					'conditions' => array(
						"{$this->name}.id = ReferenceCategory.editable_page_id"
					)
				),
				array(
					'table' => 'categories',
					'type' => 'INNER',
					'alias' => 'Category',
					'conditions' => array(
						'Category.id = ReferenceCategory.category_id'
					)
				)
			)
		));
		
		return $pages;
	}
	
	function createPluginMenu() {
		$menuElement = ROOT . DS . APP_DIR . DS . "views/elements/plugin_menu.ctp";
		$this->registryFile = ROOT . DS . APP_DIR . DS . "plugins" . DS . "installed.xml";
		
		App::import('XML');
		$xmlObj = & new XML($this->registryFile);
	    $installedPlugins = Set::reverse($xmlObj);
	    
	    // Bước chuẩn hóa, nhóm các item theo group
	    $menu = array();
	    foreach ($installedPlugins['Plugins'] as $plugin => $properties) {
	    	if (isset($properties['Installer'])) {
	    		$xmlMenu = $properties['Installer']['Menu']['Admin'];
	    		// Trường hợp chỉ có 1 group
	    		if (!isset($xmlMenu['Group'][0])) {
	    			if (!isset($menu[$xmlMenu['Group']['group_name']])) {
	    				$menu[$xmlMenu['Group']['group_name']] = array();
	    			}
	    			// Lưu item vào group
	    			$menu[$xmlMenu['Group']['group_name']][] = $xmlMenu['Group']['menu_item'];
	    		} else {
		    		// Trường hợp có nhiều hơn 1 group
		    		foreach ($xmlMenu['Group'] as $group) {
		    			// Trong trường hợp chưa có group thì tạo group
		    			if (!isset($menu[$group['group_name']])) {
		    				$menu[$group['group_name']] = array();
		    			}
		    			// Lưu item vào group
		    			$menu[$group['group_name']][] = $group['menu_item'];
		    		}
	    		}
	    	}
	    }
	    
	    // Tạo file Menu
	    $groupHint = "<!-- Bổ sung group tại đây -->";
	    $menuItemHint = "<!-- Bổ sung menu item tại đây -->";
	    $contentMenu = $groupHint; 
	    foreach ($menu as $group => $item) {
	    	$group = "<li>
	    		<a href='#'><?php __(\"{$group}\")?></a>
	    		<ul>
	    			{$menuItemHint}
	    		</ul>
	    	</li>
	    	{$groupHint}
	    	";
	    	
	    	foreach ($item as $menuItem) {
	    		$itemTemplate = "
	    		<?php \$url = {$menuItem['value']}?>
	    		<li><a href='<?php echo \$html->url(\$url);?>'><?php __(\"{$menuItem['name']}\")?></a></li>
	    		{$menuItemHint}
	    		";
	    		$group = str_replace($menuItemHint, $itemTemplate, $group);
	    	}
	    	
	    	$contentMenu = str_replace($groupHint, $group, $contentMenu);
	    }
	    
	    // Lưu xuống
	    chmod($menuElement, 0777);
	    file_put_contents($menuElement, $contentMenu);
	}
}
?>